package com.duqc.redis.lock;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * @ClassName RedisLockAnnotation
 * @Description RedisLockAnnotation
 * @Author duqc
 * @Date 2022/10/26
 **/
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.METHOD, ElementType.TYPE})
public @interface RedisLockAnnotation {

    /**
     * 特定参数识别，默认取第0个下标
     *
     * @return int
     */
    int lockFiled() default 0;

    /**
     * 超时重试次数
     *
     * @return int
     */
    int tryCount() default 3;

    /**
     * 自定义加锁类型
     *
     * @return RedisLockTypeEnum
     */
    RedisLockTypeEnum typeEnum();

    /**
     * 释放时间 秒
     *
     * @return long
     */
    long lockTime() default 30;

}
